package com.ls.server.service.model.strategy;

import com.ls.server.domain.ChatModel;
import com.ls.server.service.model.ChatModelClient;
import reactor.core.publisher.Flux;

import java.util.Map;

/**
 * 聊天模型策略接口
 */
public interface ChatModelStrategy {
    
    /**
     * 发送聊天请求（同步）
     *
     * @param modelId 模型ID
     * @param prompt 提示词
     * @param options 选项
     * @return 回复内容
     */
    String chat(Long modelId, String prompt, Map<String, Object> options);
    
    /**
     * 发送聊天请求（异步流式）
     *
     * @param modelId 模型ID
     * @param prompt 提示词
     * @param options 选项
     * @return 回复内容流
     */
    Flux<String> chatStream(Long modelId, String prompt, Map<String, Object> options);
    
    /**
     * 获取客户端
     *
     * @param model 模型信息
     * @return 聊天模型客户端
     */
    ChatModelClient getClient(ChatModel model);
} 